package appvideo.logica;


import appvideo.persistencia.Persistencia_Usuarios;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Socio extends Usuario{
    private int id;
    private Tarjeta tSocio;
    //Mas tarde habrá que meter un ArrayList<Alquiler>
    private List<Alquiler> lAlquileres;
    
    //Crear Socio sin alquiler
    public Socio(String nombre, String apellidos, String dni, String email, int tlf, Date fAlta,String password,Tarjeta tSocio) {
        super(nombre,apellidos,dni,email,tlf,fAlta,password);
        this.tSocio = tSocio;
        lAlquileres = new ArrayList();
    }
    public Socio(int id,String nombre, String apellidos, String dni, String email, int tlf, Date fAlta,String password, Tarjeta tSocio) {
        super(nombre,apellidos,dni,email,tlf,fAlta,password);
        this.tSocio = tSocio;
        lAlquileres = new ArrayList();
        this.id=id;
    }
    public Socio(){}
    
    public Tarjeta getTarjetaSocio() {
        return tSocio;
    }

    public void setTarjetaSocio(Tarjeta tSocio) {
        this.tSocio = tSocio;
    }

    public List<Alquiler> getlAlquileres() {
        return lAlquileres;
    }

    public void setlAlquileres(List<Alquiler> lAlquileres) {
        this.lAlquileres = lAlquileres;
    }

    public int getId() {
        return id;
    }
    
    @Override
    public boolean altaUsuario() {
         boolean ret = Persistencia_Usuarios.altaUsuario(this);
        //Si esta en alta->devolvemos un aviso
        if(ret==false){
            System.out.println("Socio "+this.getNombre()+" no pudo añadirse en la base de datos");
        }else{
            System.out.println("Socio "+this.getNombre()+" añadido a la Base de Datos");
        }
        return ret;
    }
    
    @Override
    public boolean bajaUsuario() {
        boolean ret = Persistencia_Usuarios.bajaUsuario(this); 
        //Si el empleado no está en la Base de datos genera aviso.
        if(ret==true){
            System.out.println("Baja realizada");
        }else
            System.out.println("Baja no realizada");
        return ret;
    }


    @Override
    public boolean modificaUsuario() {
        boolean ret=false;
        ret=Persistencia_Usuarios.modificaUsuario(this);
        if(ret==false){
            System.out.println("No se pudo realizar la modificacion del socio de DNI "+this.getDni());
        }else{
            System.out.println("Modificaciones de socio de DNI "+this.getDni()+" realizadas");
        }
        return ret;
    }
    
    public static void visualizaSocios(){
        List<Usuario> socios;
        String dev="";
        //Ir a la base de datos a por la lista de socios.
        System.out.println("Bases de datos devolviendo todos los socios del videoclub\n");
        socios=Persistencia_Usuarios.getUsuarios(new Socio());
        
        for(Usuario u: socios){
            Socio s = (Socio)u;
            System.out.println(s.toString());
        }
    } 
    
    public static Socio buscaUsuario(String dni){
        Socio s;
        //Busca el socio en la BD y me lo devuelve
        System.out.println("Buscando socio de dni "+dni+" en la BASE DE DATOS");
        s=(Socio)Persistencia_Usuarios.buscaUsuario(dni, new Socio());
        if(s==null)
            System.out.println("No existe el socio de dni: "+dni);
        else{
            System.out.println("Socio encontrado");
        }
        
        return s;
    }
}
